import html2canvas from "html2canvas";
import dayjs from "dayjs";

export const getAssetURL = (image) => {
  // 参数一: 相对路径
  // 参数二: 当前路径的URL
  return new URL(`../assets/image/${image}`, import.meta.url).href
}

function detectDeviceType() {
  const userAgent = navigator.userAgent || navigator.vendor || window.opera;
  // 使用正则表达式检测设备类型
  if (/android/i.test(userAgent)) {
    return "Android Mobile";
  }
  if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {
    return "iOS Mobile";
  }
  if (/Windows Phone/i.test(userAgent)) {
    return "Windows Mobile";
  }
  if (/Mobile/i.test(userAgent)) {
    return "Mobile";
  }

  // 默认为PC端
  return "Desktop";
}

async function domToImg(dom) {
  const canvas = await html2canvas(dom, {
    useCORS: true,
    backgroundColor: "rgba(0,0,0,0)",
    scale: window.devicePixelRatio,
    windowWidth: document.body.scrollWidth,
    windowHeight: document.body.scrollHeight,
    x: 0,
    y: 0,
    dpi: window.devicePixelRatio * 2, // 解决图片不清晰问题
    // scale: 2, // 参数重复
    // width: dom.offsetWidth
  }).then((canvas) => {
    let name = "AI春晚入场券"; //图片名称 时间生成
    canvas.toBlob(
      function (blob) {
        const ele = document.createElement("a");
        ele.download = name + ".png";
        ele.style.display = "none";
        ele.href = URL.createObjectURL(blob); //字符内容转为blob地址
        ele.click();
      },
      "image/png",
      1
    );
  });
  // 从canvas获取图片的DataURL
  // const imgData = canvas.toDataURL("image/png", 1.0);
  // const imgData = await canvas.then((canvas) => {
  //   let name = this.getNowTime(); //图片名称 时间生成
  //   canvas.toBlob(
  //     function (blob) {
  //       const ele = document.createElement("a");
  //       ele.download = name + ".png";
  //       ele.style.display = "none";
  //       ele.href = URL.createObjectURL(blob); //字符内容转为blob地址
  //       ele.click();
  //     },
  //     "image/png",
  //     1
  //   );
  // });
  return "";
  // return imgData;
}

async function domToImgDataURL(dom) {
  const canvas = await html2canvas(dom, {
    useCORS: true,
    backgroundColor: "rgba(0,0,0,0)",
    scale: window.devicePixelRatio
  });
  // 从canvas获取图片的DataURL
  const imgData = canvas.toDataURL("image/png", 1.0);
  return imgData;
}

function downloadImg(imgData) {
  // const downloadLink = document.createElement("a");
  // downloadLink.href = imgData;
  // downloadLink.download = "AI春晚入场券.png"; // 设置下载的文件名
  // document.body.appendChild(downloadLink); // 将链接元素添加到文档中
  // downloadLink.click(); // 触发下载操作
  // document.body.removeChild(downloadLink); // 下载后，移除链接元素
}


/**
 * 获取微信配置
 * @param {String} url
 * @param {Object} data 后端返回的签名信息
 */
function getwxConfig(url, data) {
  wx.config({
    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
    appId: data.appId, // 必填，公众号的唯一标识
    timestamp: data.timestamp, // 必填，生成签名的时间戳
    nonceStr: data.nonceStr, // 必填，生成签名的随机串
    signature: data.signature, // 必填，签名
    jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData', 'previewImage','downloadImage','showMenuItems'], // 必填，需要使用的JS接口列表
  });
  const param = {
    title: 'AI春晚', // 分享标题
    desc: '您有一个AI春晚邀请待查收', // 分享描述
    link: url, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
    success: function() {console.log("分享成功！")},
  }    
  wx.ready(() => {
    wx.updateAppMessageShareData(param)
    wx.updateTimelineShareData(param);
    wx.showMenuItems({
      menuList: [
        'menuItem:share:appMessage',
        'menuItem:share:timeline',
        'menuItem:favorite',
      ]
    });
  })
  wx.error(function (res) {
    // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。
    console.error('wx error', res)
    throw Error(res)
  });
}

const isExternal = (path) => {
  return /^(https?:|mailto:|tel:)/.test(path)
}

const previewImage = (urls,current) => {
  wx.previewImage({
    urls,
    current,   
  })
}

// 写一个时间转换函数，2024-12-31T09:56:00.000+08:00 day.js转换成 YYYY-MM-DD HH:mm:ss 格式的字符串
function formatTime(dateString) {
  return dayjs(dateString).format('YYYY-MM-DD HH:mm:ss'); // 将日期字符串转换为YYYY-MM-DD HH:mm:ss格式
}

export { detectDeviceType, domToImg, domToImgDataURL, downloadImg,getwxConfig, isExternal, previewImage, formatTime };
